“Infrastructure-as-a-Service” (also commonly referred to as “IaaS”) generally describes a suite of technologies provided by a service provider as an integrated solution to allow for elastic creation of a fully virtualized network and pooled computing platform (sometimes referred to as “cloud computing platform”). Enterprises may use IaaS as a business-internal organizational cloud computing platform (sometimes referred to as a “private cloud”) that gives an application developer access to infrastructure resources, such as virtualized servers, storage, and networking resources. By providing ready access to the hardware resources required to run an application, the cloud computing platform enables developers to build, deploy, and manage the lifecycle of a web application (or any other type of networked application) at a greater scale and at a faster pace than ever before.
A cloud computing platform may include one or more virtual machines that are instantiated and provisioned based on the contents of a virtual machine template (e.g., cloud template) created by a developer or provided by a cloud provider. For example, cloud templates may include metadata that describes the configuration of a virtual machine, including CPU, memory, network, storage, guest operating system, and other supporting libraries preinstalled and used to repeatedly create a VM having the specified settings. Additionally, an administrator may specify a logical template that may be mapped to a particular cloud template. As with cloud templates, a logical template may specify virtual computing resources for a virtual machine, such as CPU, memory, networking, storage, guest operating system, preinstalled runtime environments (e.g., Java Runtime Environment), and application services and commands (e.g., ssh, wget). As part of the logical template definition, an administrator may further specify one or more software services that are preinstalled on the logical template. For example, in some cases, a performance monitoring agent or virus scanner is preinstalled on a logical template.
After a template has been created, the template may be subjected to rigorous testing as part of a certification process before the template can be utilized by an enterprise. For example, before use in a production environment, a template may be tested to ensure compatibility with different software and hardware platforms, reliability in various environments and use cases (e.g., under heavy user traffic), and/or compliance with certain security and regulatory standards. Further, if a certified template is modified, the modified template cannot be used in an enterprise until the modified template has been recertified. Consequently, once a template has been created and certified, an administrator is typically reluctant to make changes to the template.
However, in many cases, the structure, size, and/or business needs of an enterprise may change, necessitating additional and/or different components to be included in a particular template. Consequently, when a new software service must be added to a certified template, an administrator typically must painstakingly update each template used by an enterprise. Moreover, the updated templates must then be submitted for recertification. As such, there are challenges faced by system administrators and other users when attempting to update a template to add or remove software services.